Comportamiento pruebas SABER 11

Exploración, análisis y acercamiento al comportamiento de los resultados: 2018 a 2020

Author

Jairo Sánchez - jairoescrito@gmail.com

Published

December 30, 2023

1. Introducción

La prueba SABER 11 es un instrumento de evaluación estandarizada, que aplica el Estado Colombiano, con el cual se mide la calidad de la educación formal media. Esta prueba se aplica a quienes están terminando o han terminado el nivel de educación media. La prueba está dividida en cinco áreas de cococimiento: Lectura Crítica, Matemáticas, Ciencias Sociales y Ciudadanas, Ciencias Naturales e Inglés. Información más detallada acerca de la prueba se encuentra en la página del Instituto Colombiano para la Evaluación de la Educación - ICFES.

Este documento pretende presentar los resultados de las pruebas aplicadas entre el año 2018 y 2020 partiendo de una exploración del conjunto de datos, detallando las variables que incluye y los principales parámetros estadísticos, posteriormente un análisis más detallado, desglosado por regiones geográficas, de las condiciones sociales, económicas y académicas de los estudiantes que presentaron la prueba, además de la los resultados de las prueba en cada uno de lo componentes. Finalmente se espera generar algunos modelos de clasificación que permitan explicar el comportamiento de los resultados de la prueba según las condiciones sociales, económicas y académicas de los estudiantes.

El conjunto de datos a utilizar en este documento está disponible en Kaggle, no obstante, en la página oficial del ICFES es posible descargar este conjunto de datos (además de otras de las pruebas de evaluación de la calidad de la educación formal que realiza el Estado Colombiano) previo registro para acceso al banco de datos. Los scripts ejecutados para el procesamiento de los datos así como el archivo de creación de este documento están disponibles en el repositorio GitHub

2. Exploración de los datos

2.1 Estructura del conjunto de datos

El conjunto de datos tiene un total de 84 columnas y 1'650.063 observaciones para un total de 138'605.292 de datos; no obstante el conjunto de datos incluye missing values que ascienden a un total de 7'081.402.

Para facilitar la maniulación y análisis, este conjunto de datos se divide en 6 subconjuntos de datos.
1) Estudiantes: incluye datos que caracterizan al estudiante, entre estos, lugar de residensia, género, colegio en el que estudia (o estudió).
2) Estudio: contiene datos del tiempo dedicado a la lectura, conectado a intenet, si el estudiante trabaja.
3) Socioeconómico: registra datos relacionados con la situación socioeconómica del estudiante como lo es el estrato de la vivienda en donde vive, la cantidad de personas que componen el hogar, datos del trabajo y nivel de escolaridad de los padres, alimentación, entre otros.
4) Resultados: detalla los resultados de la prueba saber en cada uno de sus componentes.
5) Colegios: incluye datos de los establecimientos educativos que están relacionados con al menos uno de los estudiantes que presenta la prueba.
6) Ubicación: datos de los departamenos y municipios del país, códigos y nombres de los entes territoriales.

Los nombres de las variables fueron modificados para facilitar su entendimiento.

2.1.1. Subconjunto ‘Estudiantes’

Este subconjunto se crea extrayendo 12 variables del dataset original, para algunas de estas se realizan modificaciones. Adicionalmente, se incluyen variables nuevas para facilitar su análisis:
1) Se reescriben los valores disponibles en la columna 'Tipo_Documento', se eliminan las siglas y se incluye el nombre completo 2) Se incluye la fecha de presentación de la prueba. 3) Se calcula la edad de los estudiantes al momento de presentar la prueba comparando la fecha de nacimiento la fecha de nacimiento (disponible en el dataset original) y la fecha de la prueba. Antes de realizar el cálculo se verifican si existen missing values en las fechas, encontrando que no existen.

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1650063 entries, 0 to 1650062
Data columns (total 12 columns):
 #   Column             Non-Null Count    Dtype  
---  ------             --------------    -----  
 0   Consecutivo_Est    1650063 non-null  object 
 1   Periodo            1650063 non-null  int64  
 2   Tipo_Documento     1650063 non-null  object 
 3   Nacionalidad       1650063 non-null  object 
 4   Genero             1649948 non-null  object 
 5   Fecha_Nacimiento   1650063 non-null  object 
 6   Pais_Residencia    1650063 non-null  object 
 7   Etnia              1645775 non-null  object 
 8   Cod_Departamento   1648767 non-null  float64
 9   Cod_Municipio      1648767 non-null  float64
 10  Cod_Icfes_Colegio  1650063 non-null  int64  
 11  Privado_Libertad   1650063 non-null  object 
dtypes: float64(2), int64(2), object(8)
memory usage: 151.1+ MB
Consecutivo_Est Periodo Tipo_Documento Nacionalidad Genero Fecha_Nacimiento Pais_Residencia Etnia Cod_Departamento Cod_Municipio Cod_Icfes_Colegio Privado_Libertad
Loading... (need help?)


Periodo Fecha_Prueba
Loading... (need help?)


<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1650063 entries, 0 to 1650062
Data columns (total 14 columns):
 #   Column             Non-Null Count    Dtype         
---  ------             --------------    -----         
 0   Consecutivo_Est    1650063 non-null  object        
 1   Periodo            1650063 non-null  int64         
 2   Tipo_Documento     1650063 non-null  object        
 3   Nacionalidad       1650063 non-null  object        
 4   Genero             1649948 non-null  object        
 5   Fecha_Nacimiento   1650063 non-null  object        
 6   Pais_Residencia    1650063 non-null  object        
 7   Etnia              1645775 non-null  object        
 8   Cod_Departamento   1648767 non-null  float64       
 9   Cod_Municipio      1648767 non-null  float64       
 10  Cod_Icfes_Colegio  1650063 non-null  int64         
 11  Privado_Libertad   1650063 non-null  object        
 12  Fecha_Prueba       1650063 non-null  datetime64[ns]
 13  Edad               1650063 non-null  int64         
dtypes: datetime64[ns](1), float64(2), int64(3), object(8)
memory usage: 176.2+ MB
Consecutivo_Est Periodo Tipo_Documento Nacionalidad Genero Fecha_Nacimiento Pais_Residencia Etnia Cod_Departamento Cod_Municipio Cod_Icfes_Colegio Privado_Libertad Fecha_Prueba Edad
Loading... (need help?)


Los resultados obtenidos muestran algún tipo de conflicto en la columna "Fecha_Nacimiento", la variable no 'aceptó' la modificación a dato tipo datetime. La revisión de los datos nulos (de todo el subconjunto) y la distribución de los datos de edades calculadas muestran lo siguiente:

Edad
Loading... (need help?)


1) Cuatro variables presentan NaN (missing values o valores faltantes) de las cuales 'Etnia' es la de mayor cantidad, algunos estudiantes no tienen información de ubicación geográfica (lugar de residencia).
2) La variable calculada 'Edad' no presenta NaN, no obstante presenta datos incongruentes. Si bien el promedio de edad es de 22 años, la desviación estándar es de 93 años, dato que no presenta lógica en este contexto. Adicionalmente, se observa un valor máximo de edad de 2019, dato que resulta erroneo. Por otra parte, el valor mínimo en la edad es 0, lo cual implica datos no lógicos. Con estos datos se concluye que existen deficiencias en los datos de la variable 'Fecha_Nacimiento'.
No se tiene un parámetro establecido para las edades que deberían tener los estudiantes al momento de presentar la prueba. En este punto se deciden definir dos límites:
1) Límite superior: 79 años. Si bien no existe un límite de edad como tal para la presentación de la prueba saber 11, es poco probable que ciudadanos con edades superiores a 79 años la presenten.
2) Límite inferior: 13 año. Al igual que el límite superior, podría presentarse que existan estudiantes menores de 13 años presentando la prueba saber, no obstante, se asume poco probable que un estudiante menor de 13 años este finalizando los estudios de bachillerato.

Vale la pena aclarar que esta decisiones podrían estar excluyendo valores reales y válidos de edad, no obstante, resulta complejo poder diferenciar los datos reales y no válidos.

0
Loading... (need help?)


Edad
Loading... (need help?)